// ========================================================================= //

// includes
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "string.h"
#include "limits.h"
#include "float.h"



#define JOTAI_NUM_RANDS_ 25

const unsigned rand_primes[JOTAI_NUM_RANDS_] = {179, 103, 479, 647, 229, 37, 271, 557, 263, 607, 18743, 50359, 21929, 48757, 98179, 12907, 52937, 64579, 49957, 52567, 507163, 149939, 412157, 680861, 757751};

int next_i() {
  int counter = 0;
  return rand_primes[(++counter)%JOTAI_NUM_RANDS_];
}

float next_f() {
  int counter = 0;
  return rand_primes[(++counter)%JOTAI_NUM_RANDS_] / 757751.0F;
} 


// Usage menu
void usage() {
    printf("%s", "Usage:\n\
    prog [ARGS]\n\
\nARGS:\n\
       0            int-bounds\n\
       1            big-arr\n\
       2            big-arr-10x\n\
       3            empty\n\
\n\
");

}


// ------------------------------------------------------------------------- //

#define NULL ((void*)0)
typedef unsigned long size_t;  // Customize by platform.
typedef long intptr_t; typedef unsigned long uintptr_t;
typedef long scalar_t__;  // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef  int /*<<< orphan*/  umode_t ;

/* Variables and functions */
#define  ISCSI_FLASHNODE_ALIAS 319 
#define  ISCSI_FLASHNODE_AUTO_SND_TGT_DISABLE 318 
#define  ISCSI_FLASHNODE_BIDI_CHAP_EN 317 
#define  ISCSI_FLASHNODE_CHAP_AUTH_EN 316 
#define  ISCSI_FLASHNODE_CHAP_OUT_IDX 315 
#define  ISCSI_FLASHNODE_DATASEQ_INORDER 314 
#define  ISCSI_FLASHNODE_DATA_DGST_EN 313 
#define  ISCSI_FLASHNODE_DEF_TASKMGMT_TMO 312 
#define  ISCSI_FLASHNODE_DEF_TIME2RETAIN 311 
#define  ISCSI_FLASHNODE_DEF_TIME2WAIT 310 
#define  ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL 309 
#define  ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN 308 
#define  ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX 307 
#define  ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE 306 
#define  ISCSI_FLASHNODE_DISCOVERY_SESS 305 
#define  ISCSI_FLASHNODE_ENTRY_EN 304 
#define  ISCSI_FLASHNODE_ERL 303 
#define  ISCSI_FLASHNODE_EXP_STATSN 302 
#define  ISCSI_FLASHNODE_FIRST_BURST 301 
#define  ISCSI_FLASHNODE_HDR_DGST_EN 300 
#define  ISCSI_FLASHNODE_IMM_DATA_EN 299 
#define  ISCSI_FLASHNODE_INITIAL_R2T_EN 298 
#define  ISCSI_FLASHNODE_IPADDR 297 
#define  ISCSI_FLASHNODE_IPV4_TOS 296 
#define  ISCSI_FLASHNODE_IPV6_FLOW_LABEL 295 
#define  ISCSI_FLASHNODE_IPV6_TC 294 
#define  ISCSI_FLASHNODE_IP_FRAG_DISABLE 293 
#define  ISCSI_FLASHNODE_ISID 292 
#define  ISCSI_FLASHNODE_IS_BOOT_TGT 291 
#define  ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6 290 
#define  ISCSI_FLASHNODE_KEEPALIVE_TMO 289 
#define  ISCSI_FLASHNODE_LINK_LOCAL_IPV6 288 
#define  ISCSI_FLASHNODE_LOCAL_PORT 287 
#define  ISCSI_FLASHNODE_MAX_BURST 286 
#define  ISCSI_FLASHNODE_MAX_R2T 285 
#define  ISCSI_FLASHNODE_MAX_RECV_DLENGTH 284 
#define  ISCSI_FLASHNODE_MAX_SEGMENT_SIZE 283 
#define  ISCSI_FLASHNODE_MAX_XMIT_DLENGTH 282 
#define  ISCSI_FLASHNODE_NAME 281 
#define  ISCSI_FLASHNODE_PARAM 280 
#define  ISCSI_FLASHNODE_PASSWORD 279 
#define  ISCSI_FLASHNODE_PDU_INORDER 278 
#define  ISCSI_FLASHNODE_PORT 277 
#define  ISCSI_FLASHNODE_PORTAL_TYPE 276 
#define  ISCSI_FLASHNODE_REDIRECT_IPADDR 275 
#define  ISCSI_FLASHNODE_SNACK_REQ_EN 274 
#define  ISCSI_FLASHNODE_STATSN 273 
#define  ISCSI_FLASHNODE_TCP_NAGLE_DISABLE 272 
#define  ISCSI_FLASHNODE_TCP_RECV_WSF 271 
#define  ISCSI_FLASHNODE_TCP_TIMER_SCALE 270 
#define  ISCSI_FLASHNODE_TCP_TIMESTAMP_EN 269 
#define  ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT 268 
#define  ISCSI_FLASHNODE_TCP_WSF_DISABLE 267 
#define  ISCSI_FLASHNODE_TCP_XMIT_WSF 266 
#define  ISCSI_FLASHNODE_TPGT 265 
#define  ISCSI_FLASHNODE_TSID 264 
#define  ISCSI_FLASHNODE_USERNAME 263 
#define  ISCSI_HOST_PARAM 262 
#define  ISCSI_HOST_PARAM_HWADDRESS 261 
#define  ISCSI_HOST_PARAM_INITIATOR_NAME 260 
#define  ISCSI_HOST_PARAM_IPADDRESS 259 
#define  ISCSI_HOST_PARAM_PORT_SPEED 258 
#define  ISCSI_HOST_PARAM_PORT_STATE 257 
#define  ISCSI_IFACE_PARAM 256 
#define  ISCSI_IFACE_PARAM_BIDI_CHAP_EN 255 
#define  ISCSI_IFACE_PARAM_CHAP_AUTH_EN 254 
#define  ISCSI_IFACE_PARAM_DATADGST_EN 253 
#define  ISCSI_IFACE_PARAM_DATASEQ_INORDER_EN 252 
#define  ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO 251 
#define  ISCSI_IFACE_PARAM_DISCOVERY_AUTH_OPTIONAL 250 
#define  ISCSI_IFACE_PARAM_DISCOVERY_LOGOUT_EN 249 
#define  ISCSI_IFACE_PARAM_ERL 248 
#define  ISCSI_IFACE_PARAM_FIRST_BURST 247 
#define  ISCSI_IFACE_PARAM_HDRDGST_EN 246 
#define  ISCSI_IFACE_PARAM_IMM_DATA_EN 245 
#define  ISCSI_IFACE_PARAM_INITIAL_R2T_EN 244 
#define  ISCSI_IFACE_PARAM_INITIATOR_NAME 243 
#define  ISCSI_IFACE_PARAM_MAX_BURST 242 
#define  ISCSI_IFACE_PARAM_MAX_R2T 241 
#define  ISCSI_IFACE_PARAM_MAX_RECV_DLENGTH 240 
#define  ISCSI_IFACE_PARAM_PDU_INORDER_EN 239 
#define  ISCSI_IFACE_PARAM_STRICT_LOGIN_COMP_EN 238 
#define  ISCSI_NET_PARAM 237 
#define  ISCSI_NET_PARAM_CACHE_ID 236 
#define  ISCSI_NET_PARAM_DELAYED_ACK_EN 235 
#define  ISCSI_NET_PARAM_IFACE_ENABLE 234 
#define  ISCSI_NET_PARAM_IPADDR_STATE 233 
#define  ISCSI_NET_PARAM_IPV4_ADDR 232 
#define  ISCSI_NET_PARAM_IPV4_BOOTPROTO 231 
#define  ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID 230 
#define  ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID_EN 229 
#define  ISCSI_NET_PARAM_IPV4_DHCP_DNS_ADDR_EN 228 
#define  ISCSI_NET_PARAM_IPV4_DHCP_LEARN_IQN_EN 227 
#define  ISCSI_NET_PARAM_IPV4_DHCP_REQ_VENDOR_ID_EN 226 
#define  ISCSI_NET_PARAM_IPV4_DHCP_SLP_DA_EN 225 
#define  ISCSI_NET_PARAM_IPV4_DHCP_USE_VENDOR_ID_EN 224 
#define  ISCSI_NET_PARAM_IPV4_DHCP_VENDOR_ID 223 
#define  ISCSI_NET_PARAM_IPV4_FRAGMENT_DISABLE 222 
#define  ISCSI_NET_PARAM_IPV4_GRAT_ARP_EN 221 
#define  ISCSI_NET_PARAM_IPV4_GW 220 
#define  ISCSI_NET_PARAM_IPV4_IN_FORWARD_EN 219 
#define  ISCSI_NET_PARAM_IPV4_SUBNET 218 
#define  ISCSI_NET_PARAM_IPV4_TOS 217 
#define  ISCSI_NET_PARAM_IPV4_TOS_EN 216 
#define  ISCSI_NET_PARAM_IPV4_TTL 215 
#define  ISCSI_NET_PARAM_IPV6_ADDR 214 
#define  ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG 213 
#define  ISCSI_NET_PARAM_IPV6_DUP_ADDR_DETECT_CNT 212 
#define  ISCSI_NET_PARAM_IPV6_FLOW_LABEL 211 
#define  ISCSI_NET_PARAM_IPV6_GRAT_NEIGHBOR_ADV_EN 210 
#define  ISCSI_NET_PARAM_IPV6_HOP_LIMIT 209 
#define  ISCSI_NET_PARAM_IPV6_LINKLOCAL 208 
#define  ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG 207 
#define  ISCSI_NET_PARAM_IPV6_LINKLOCAL_STATE 206 
#define  ISCSI_NET_PARAM_IPV6_MLD_EN 205 
#define  ISCSI_NET_PARAM_IPV6_ND_REACHABLE_TMO 204 
#define  ISCSI_NET_PARAM_IPV6_ND_REXMIT_TIME 203 
#define  ISCSI_NET_PARAM_IPV6_ND_STALE_TMO 202 
#define  ISCSI_NET_PARAM_IPV6_ROUTER 201 
#define  ISCSI_NET_PARAM_IPV6_ROUTER_STATE 200 
#define  ISCSI_NET_PARAM_IPV6_RTR_ADV_LINK_MTU 199 
#define  ISCSI_NET_PARAM_IPV6_TRAFFIC_CLASS 198 
#define  ISCSI_NET_PARAM_MTU 197 
#define  ISCSI_NET_PARAM_PORT 196 
#define  ISCSI_NET_PARAM_REDIRECT_EN 195 
#define  ISCSI_NET_PARAM_TCP_NAGLE_DISABLE 194 
#define  ISCSI_NET_PARAM_TCP_TIMER_SCALE 193 
#define  ISCSI_NET_PARAM_TCP_TIMESTAMP_EN 192 
#define  ISCSI_NET_PARAM_TCP_WSF 191 
#define  ISCSI_NET_PARAM_TCP_WSF_DISABLE 190 
#define  ISCSI_NET_PARAM_VLAN_ENABLED 189 
#define  ISCSI_NET_PARAM_VLAN_ID 188 
#define  ISCSI_NET_PARAM_VLAN_PRIORITY 187 
#define  ISCSI_PARAM 186 
#define  ISCSI_PARAM_AUTO_SND_TGT_DISABLE 185 
#define  ISCSI_PARAM_BIDI_CHAP_EN 184 
#define  ISCSI_PARAM_CHAP_AUTH_EN 183 
#define  ISCSI_PARAM_CHAP_IN_IDX 182 
#define  ISCSI_PARAM_CHAP_OUT_IDX 181 
#define  ISCSI_PARAM_CONN_ADDRESS 180 
#define  ISCSI_PARAM_CONN_PORT 179 
#define  ISCSI_PARAM_DATADGST_EN 178 
#define  ISCSI_PARAM_DATASEQ_INORDER_EN 177 
#define  ISCSI_PARAM_DEF_TASKMGMT_TMO 176 
#define  ISCSI_PARAM_DEF_TIME2RETAIN 175 
#define  ISCSI_PARAM_DEF_TIME2WAIT 174 
#define  ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL 173 
#define  ISCSI_PARAM_DISCOVERY_LOGOUT_EN 172 
#define  ISCSI_PARAM_DISCOVERY_PARENT_IDX 171 
#define  ISCSI_PARAM_DISCOVERY_PARENT_TYPE 170 
#define  ISCSI_PARAM_DISCOVERY_SESS 169 
#define  ISCSI_PARAM_ERL 168 
#define  ISCSI_PARAM_EXP_STATSN 167 
#define  ISCSI_PARAM_FIRST_BURST 166 
#define  ISCSI_PARAM_HDRDGST_EN 165 
#define  ISCSI_PARAM_IFACE_NAME 164 
#define  ISCSI_PARAM_IMM_DATA_EN 163 
#define  ISCSI_PARAM_INITIAL_R2T_EN 162 
#define  ISCSI_PARAM_IPV4_TOS 161 
#define  ISCSI_PARAM_IPV6_FLOW_LABEL 160 
#define  ISCSI_PARAM_IPV6_TC 159 
#define  ISCSI_PARAM_IP_FRAGMENT_DISABLE 158 
#define  ISCSI_PARAM_ISID 157 
#define  ISCSI_PARAM_IS_FW_ASSIGNED_IPV6 156 
#define  ISCSI_PARAM_KEEPALIVE_TMO 155 
#define  ISCSI_PARAM_LOCAL_IPADDR 154 
#define  ISCSI_PARAM_LOCAL_PORT 153 
#define  ISCSI_PARAM_MAX_BURST 152 
#define  ISCSI_PARAM_MAX_R2T 151 
#define  ISCSI_PARAM_MAX_RECV_DLENGTH 150 
#define  ISCSI_PARAM_MAX_SEGMENT_SIZE 149 
#define  ISCSI_PARAM_MAX_XMIT_DLENGTH 148 
#define  ISCSI_PARAM_PASSWORD 147 
#define  ISCSI_PARAM_PASSWORD_IN 146 
#define  ISCSI_PARAM_PDU_INORDER_EN 145 
#define  ISCSI_PARAM_PERSISTENT_ADDRESS 144 
#define  ISCSI_PARAM_PERSISTENT_PORT 143 
#define  ISCSI_PARAM_PORTAL_TYPE 142 
#define  ISCSI_PARAM_STATSN 141 
#define  ISCSI_PARAM_TARGET_ALIAS 140 
#define  ISCSI_PARAM_TARGET_NAME 139 
#define  ISCSI_PARAM_TCP_NAGLE_DISABLE 138 
#define  ISCSI_PARAM_TCP_RECV_WSF 137 
#define  ISCSI_PARAM_TCP_TIMER_SCALE 136 
#define  ISCSI_PARAM_TCP_TIMESTAMP_EN 135 
#define  ISCSI_PARAM_TCP_TIMESTAMP_STAT 134 
#define  ISCSI_PARAM_TCP_WSF_DISABLE 133 
#define  ISCSI_PARAM_TCP_XMIT_WSF 132 
#define  ISCSI_PARAM_TPGT 131 
#define  ISCSI_PARAM_TSID 130 
#define  ISCSI_PARAM_USERNAME 129 
#define  ISCSI_PARAM_USERNAME_IN 128 
 int /*<<< orphan*/  S_IRUGO ; 

__attribute__((used)) static umode_t qla4_attr_is_visible(int param_type, int param)
{
	switch (param_type) {
	case ISCSI_HOST_PARAM:
		switch (param) {
		case ISCSI_HOST_PARAM_HWADDRESS:
		case ISCSI_HOST_PARAM_IPADDRESS:
		case ISCSI_HOST_PARAM_INITIATOR_NAME:
		case ISCSI_HOST_PARAM_PORT_STATE:
		case ISCSI_HOST_PARAM_PORT_SPEED:
			return S_IRUGO;
		default:
			return 0;
		}
	case ISCSI_PARAM:
		switch (param) {
		case ISCSI_PARAM_PERSISTENT_ADDRESS:
		case ISCSI_PARAM_PERSISTENT_PORT:
		case ISCSI_PARAM_CONN_ADDRESS:
		case ISCSI_PARAM_CONN_PORT:
		case ISCSI_PARAM_TARGET_NAME:
		case ISCSI_PARAM_TPGT:
		case ISCSI_PARAM_TARGET_ALIAS:
		case ISCSI_PARAM_MAX_BURST:
		case ISCSI_PARAM_MAX_R2T:
		case ISCSI_PARAM_FIRST_BURST:
		case ISCSI_PARAM_MAX_RECV_DLENGTH:
		case ISCSI_PARAM_MAX_XMIT_DLENGTH:
		case ISCSI_PARAM_IFACE_NAME:
		case ISCSI_PARAM_CHAP_OUT_IDX:
		case ISCSI_PARAM_CHAP_IN_IDX:
		case ISCSI_PARAM_USERNAME:
		case ISCSI_PARAM_PASSWORD:
		case ISCSI_PARAM_USERNAME_IN:
		case ISCSI_PARAM_PASSWORD_IN:
		case ISCSI_PARAM_AUTO_SND_TGT_DISABLE:
		case ISCSI_PARAM_DISCOVERY_SESS:
		case ISCSI_PARAM_PORTAL_TYPE:
		case ISCSI_PARAM_CHAP_AUTH_EN:
		case ISCSI_PARAM_DISCOVERY_LOGOUT_EN:
		case ISCSI_PARAM_BIDI_CHAP_EN:
		case ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL:
		case ISCSI_PARAM_DEF_TIME2WAIT:
		case ISCSI_PARAM_DEF_TIME2RETAIN:
		case ISCSI_PARAM_HDRDGST_EN:
		case ISCSI_PARAM_DATADGST_EN:
		case ISCSI_PARAM_INITIAL_R2T_EN:
		case ISCSI_PARAM_IMM_DATA_EN:
		case ISCSI_PARAM_PDU_INORDER_EN:
		case ISCSI_PARAM_DATASEQ_INORDER_EN:
		case ISCSI_PARAM_MAX_SEGMENT_SIZE:
		case ISCSI_PARAM_TCP_TIMESTAMP_STAT:
		case ISCSI_PARAM_TCP_WSF_DISABLE:
		case ISCSI_PARAM_TCP_NAGLE_DISABLE:
		case ISCSI_PARAM_TCP_TIMER_SCALE:
		case ISCSI_PARAM_TCP_TIMESTAMP_EN:
		case ISCSI_PARAM_TCP_XMIT_WSF:
		case ISCSI_PARAM_TCP_RECV_WSF:
		case ISCSI_PARAM_IP_FRAGMENT_DISABLE:
		case ISCSI_PARAM_IPV4_TOS:
		case ISCSI_PARAM_IPV6_TC:
		case ISCSI_PARAM_IPV6_FLOW_LABEL:
		case ISCSI_PARAM_IS_FW_ASSIGNED_IPV6:
		case ISCSI_PARAM_KEEPALIVE_TMO:
		case ISCSI_PARAM_LOCAL_PORT:
		case ISCSI_PARAM_ISID:
		case ISCSI_PARAM_TSID:
		case ISCSI_PARAM_DEF_TASKMGMT_TMO:
		case ISCSI_PARAM_ERL:
		case ISCSI_PARAM_STATSN:
		case ISCSI_PARAM_EXP_STATSN:
		case ISCSI_PARAM_DISCOVERY_PARENT_IDX:
		case ISCSI_PARAM_DISCOVERY_PARENT_TYPE:
		case ISCSI_PARAM_LOCAL_IPADDR:
			return S_IRUGO;
		default:
			return 0;
		}
	case ISCSI_NET_PARAM:
		switch (param) {
		case ISCSI_NET_PARAM_IPV4_ADDR:
		case ISCSI_NET_PARAM_IPV4_SUBNET:
		case ISCSI_NET_PARAM_IPV4_GW:
		case ISCSI_NET_PARAM_IPV4_BOOTPROTO:
		case ISCSI_NET_PARAM_IFACE_ENABLE:
		case ISCSI_NET_PARAM_IPV6_LINKLOCAL:
		case ISCSI_NET_PARAM_IPV6_ADDR:
		case ISCSI_NET_PARAM_IPV6_ROUTER:
		case ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG:
		case ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG:
		case ISCSI_NET_PARAM_VLAN_ID:
		case ISCSI_NET_PARAM_VLAN_PRIORITY:
		case ISCSI_NET_PARAM_VLAN_ENABLED:
		case ISCSI_NET_PARAM_MTU:
		case ISCSI_NET_PARAM_PORT:
		case ISCSI_NET_PARAM_IPADDR_STATE:
		case ISCSI_NET_PARAM_IPV6_LINKLOCAL_STATE:
		case ISCSI_NET_PARAM_IPV6_ROUTER_STATE:
		case ISCSI_NET_PARAM_DELAYED_ACK_EN:
		case ISCSI_NET_PARAM_TCP_NAGLE_DISABLE:
		case ISCSI_NET_PARAM_TCP_WSF_DISABLE:
		case ISCSI_NET_PARAM_TCP_WSF:
		case ISCSI_NET_PARAM_TCP_TIMER_SCALE:
		case ISCSI_NET_PARAM_TCP_TIMESTAMP_EN:
		case ISCSI_NET_PARAM_CACHE_ID:
		case ISCSI_NET_PARAM_IPV4_DHCP_DNS_ADDR_EN:
		case ISCSI_NET_PARAM_IPV4_DHCP_SLP_DA_EN:
		case ISCSI_NET_PARAM_IPV4_TOS_EN:
		case ISCSI_NET_PARAM_IPV4_TOS:
		case ISCSI_NET_PARAM_IPV4_GRAT_ARP_EN:
		case ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID_EN:
		case ISCSI_NET_PARAM_IPV4_DHCP_ALT_CLIENT_ID:
		case ISCSI_NET_PARAM_IPV4_DHCP_REQ_VENDOR_ID_EN:
		case ISCSI_NET_PARAM_IPV4_DHCP_USE_VENDOR_ID_EN:
		case ISCSI_NET_PARAM_IPV4_DHCP_VENDOR_ID:
		case ISCSI_NET_PARAM_IPV4_DHCP_LEARN_IQN_EN:
		case ISCSI_NET_PARAM_IPV4_FRAGMENT_DISABLE:
		case ISCSI_NET_PARAM_IPV4_IN_FORWARD_EN:
		case ISCSI_NET_PARAM_REDIRECT_EN:
		case ISCSI_NET_PARAM_IPV4_TTL:
		case ISCSI_NET_PARAM_IPV6_GRAT_NEIGHBOR_ADV_EN:
		case ISCSI_NET_PARAM_IPV6_MLD_EN:
		case ISCSI_NET_PARAM_IPV6_FLOW_LABEL:
		case ISCSI_NET_PARAM_IPV6_TRAFFIC_CLASS:
		case ISCSI_NET_PARAM_IPV6_HOP_LIMIT:
		case ISCSI_NET_PARAM_IPV6_ND_REACHABLE_TMO:
		case ISCSI_NET_PARAM_IPV6_ND_REXMIT_TIME:
		case ISCSI_NET_PARAM_IPV6_ND_STALE_TMO:
		case ISCSI_NET_PARAM_IPV6_DUP_ADDR_DETECT_CNT:
		case ISCSI_NET_PARAM_IPV6_RTR_ADV_LINK_MTU:
			return S_IRUGO;
		default:
			return 0;
		}
	case ISCSI_IFACE_PARAM:
		switch (param) {
		case ISCSI_IFACE_PARAM_DEF_TASKMGMT_TMO:
		case ISCSI_IFACE_PARAM_HDRDGST_EN:
		case ISCSI_IFACE_PARAM_DATADGST_EN:
		case ISCSI_IFACE_PARAM_IMM_DATA_EN:
		case ISCSI_IFACE_PARAM_INITIAL_R2T_EN:
		case ISCSI_IFACE_PARAM_DATASEQ_INORDER_EN:
		case ISCSI_IFACE_PARAM_PDU_INORDER_EN:
		case ISCSI_IFACE_PARAM_ERL:
		case ISCSI_IFACE_PARAM_MAX_RECV_DLENGTH:
		case ISCSI_IFACE_PARAM_FIRST_BURST:
		case ISCSI_IFACE_PARAM_MAX_R2T:
		case ISCSI_IFACE_PARAM_MAX_BURST:
		case ISCSI_IFACE_PARAM_CHAP_AUTH_EN:
		case ISCSI_IFACE_PARAM_BIDI_CHAP_EN:
		case ISCSI_IFACE_PARAM_DISCOVERY_AUTH_OPTIONAL:
		case ISCSI_IFACE_PARAM_DISCOVERY_LOGOUT_EN:
		case ISCSI_IFACE_PARAM_STRICT_LOGIN_COMP_EN:
		case ISCSI_IFACE_PARAM_INITIATOR_NAME:
			return S_IRUGO;
		default:
			return 0;
		}
	case ISCSI_FLASHNODE_PARAM:
		switch (param) {
		case ISCSI_FLASHNODE_IS_FW_ASSIGNED_IPV6:
		case ISCSI_FLASHNODE_PORTAL_TYPE:
		case ISCSI_FLASHNODE_AUTO_SND_TGT_DISABLE:
		case ISCSI_FLASHNODE_DISCOVERY_SESS:
		case ISCSI_FLASHNODE_ENTRY_EN:
		case ISCSI_FLASHNODE_HDR_DGST_EN:
		case ISCSI_FLASHNODE_DATA_DGST_EN:
		case ISCSI_FLASHNODE_IMM_DATA_EN:
		case ISCSI_FLASHNODE_INITIAL_R2T_EN:
		case ISCSI_FLASHNODE_DATASEQ_INORDER:
		case ISCSI_FLASHNODE_PDU_INORDER:
		case ISCSI_FLASHNODE_CHAP_AUTH_EN:
		case ISCSI_FLASHNODE_SNACK_REQ_EN:
		case ISCSI_FLASHNODE_DISCOVERY_LOGOUT_EN:
		case ISCSI_FLASHNODE_BIDI_CHAP_EN:
		case ISCSI_FLASHNODE_DISCOVERY_AUTH_OPTIONAL:
		case ISCSI_FLASHNODE_ERL:
		case ISCSI_FLASHNODE_TCP_TIMESTAMP_STAT:
		case ISCSI_FLASHNODE_TCP_NAGLE_DISABLE:
		case ISCSI_FLASHNODE_TCP_WSF_DISABLE:
		case ISCSI_FLASHNODE_TCP_TIMER_SCALE:
		case ISCSI_FLASHNODE_TCP_TIMESTAMP_EN:
		case ISCSI_FLASHNODE_IP_FRAG_DISABLE:
		case ISCSI_FLASHNODE_MAX_RECV_DLENGTH:
		case ISCSI_FLASHNODE_MAX_XMIT_DLENGTH:
		case ISCSI_FLASHNODE_FIRST_BURST:
		case ISCSI_FLASHNODE_DEF_TIME2WAIT:
		case ISCSI_FLASHNODE_DEF_TIME2RETAIN:
		case ISCSI_FLASHNODE_MAX_R2T:
		case ISCSI_FLASHNODE_KEEPALIVE_TMO:
		case ISCSI_FLASHNODE_ISID:
		case ISCSI_FLASHNODE_TSID:
		case ISCSI_FLASHNODE_PORT:
		case ISCSI_FLASHNODE_MAX_BURST:
		case ISCSI_FLASHNODE_DEF_TASKMGMT_TMO:
		case ISCSI_FLASHNODE_IPADDR:
		case ISCSI_FLASHNODE_ALIAS:
		case ISCSI_FLASHNODE_REDIRECT_IPADDR:
		case ISCSI_FLASHNODE_MAX_SEGMENT_SIZE:
		case ISCSI_FLASHNODE_LOCAL_PORT:
		case ISCSI_FLASHNODE_IPV4_TOS:
		case ISCSI_FLASHNODE_IPV6_TC:
		case ISCSI_FLASHNODE_IPV6_FLOW_LABEL:
		case ISCSI_FLASHNODE_NAME:
		case ISCSI_FLASHNODE_TPGT:
		case ISCSI_FLASHNODE_LINK_LOCAL_IPV6:
		case ISCSI_FLASHNODE_DISCOVERY_PARENT_IDX:
		case ISCSI_FLASHNODE_DISCOVERY_PARENT_TYPE:
		case ISCSI_FLASHNODE_TCP_XMIT_WSF:
		case ISCSI_FLASHNODE_TCP_RECV_WSF:
		case ISCSI_FLASHNODE_CHAP_OUT_IDX:
		case ISCSI_FLASHNODE_USERNAME:
		case ISCSI_FLASHNODE_PASSWORD:
		case ISCSI_FLASHNODE_STATSN:
		case ISCSI_FLASHNODE_EXP_STATSN:
		case ISCSI_FLASHNODE_IS_BOOT_TGT:
			return S_IRUGO;
		default:
			return 0;
		}
	}

	return 0;
}

// ------------------------------------------------------------------------- //

int main(int argc, char *argv[]) {

    if (argc != 2) {
        usage();
        return 1;
    }

    int opt = atoi(argv[1]);
    switch(opt) {

    // int-bounds
    case 0:
    {
          int param_type = 100;
        
          int param = 100;
        
          int benchRet = qla4_attr_is_visible(param_type,param);
          printf("%d\n", benchRet); 
        
        break;
    }
    // big-arr
    case 1:
    {
          int param_type = 255;
        
          int param = 255;
        
          int benchRet = qla4_attr_is_visible(param_type,param);
          printf("%d\n", benchRet); 
        
        break;
    }
    // big-arr-10x
    case 2:
    {
          int param_type = 10;
        
          int param = 10;
        
          int benchRet = qla4_attr_is_visible(param_type,param);
          printf("%d\n", benchRet); 
        
        break;
    }
    // empty
    case 3:
    {
          int param_type = ((-2 * (next_i()%2)) + 1) * next_i();
        
          int param = ((-2 * (next_i()%2)) + 1) * next_i();
        
          int benchRet = qla4_attr_is_visible(param_type,param);
          printf("%d\n", benchRet); 
        
        break;
    }
    default:
        usage();
        break;

    }

    return 0;
}
